
#ifndef __SSH_CHANNEL_H
#define __SSH_CHANNEL_H

#include "SSHClient.h"

#define SCP_FILEBUFFER 131072
#define SHELL_CMDBUFFER 1024
#define FORWARD_STREAMBUFFER 32768

/** Abstract class containing clean-up code for all type of SSH
 * channel. */
class SSHChannel
{
   public:
      SSHChannel(SSHClient &itclient);
      virtual ~SSHChannel();
      static void *stopChannelFuture(std::vector<void *> *future_arguments);
      static void stopChannel(SSHChannel *sshchan, LIBSSH2_CHANNEL *tchannel);
   protected:
      /** Memory pool to use in this class. */
      apr_pool_t *imp;
      /** The SSH client object associated with this channel. */
      SSHClient *tclient;
};

#endif
